"""
lambda表达式创建匿名函数


语法：
lambda 参数列表：表达式(返回值)
1）参数：4种类型（函数中的参数在lambda表达式种豆适用
2）返回值只能是一个，若要返回多个
"""


def fun1(a, b):
    return a + b


fun2 = lambda a, b: a + b
print(fun2(1, 4))

sum1 = lambda a=1, b=2: a + b
print(sum1())
# 一个星号返回元组
lastnum = lambda *args: args[-1]
print(lastnum(1, 23, 321, 4, 21, 321, 3213, 2131))
# 可变参数，两个星号，返回字典
fn2 = lambda **kwargs: kwargs
print(fn2(name='tom', age=18))

maxnum = lambda a, b: a if a >= b else b

students = [
    {'name': 'TOM', 'age': 20},
    {'name': 'A', 'age': 20},
    {'name': 'ROSE', 'age': 19},
    {'name': 'Jack', 'age': 22}
]
print(students)
# reverse为false和默认一样是升序，reverse=True时为降序
students.sort(key=lambda x: x['name'], reverse=False)
print(students)

print(sorted(students, key=lambda a: a['age'], reverse=True))
print(sorted(students, key=lambda a: (a['age'],a['name']), reverse=False))

dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 3, 'f': 1, 'g': 7}
#按value升序排列
print(sorted(dict1.items(),key=lambda x:x[1]))


